Literate sample

This file demonstrates how to write Markdown document with embedded F# snippets that can be transformed into nice HTML using the literate.fsx script from the F# Formatting package.

In this case, the document itself is a valid Markdown and you can use standard Markdown features to format the text:

  • Here is an example of unordered list and...
  • Text formatting including bold and emphasis

For more information, see the Markdown reference.

Writing F# code


In standard Markdown, you can include code snippets by writing a block indented by four spaces and the code snippet will be turned into a <pre> element. If you do the same using Literate F# tool, the code is turned into a nicely formatted F# snippet:

1: 
2: 
3: 
4: 
5: 
6: 
/// The Hello World of functional languages!
let rec factorial x =
  if x = 0 then 1
  else x * (factorial (x - 1))

let f10 = factorial 10

Hiding code

If you want to include some code in the source code, but omit it from the output, you can use the hide command. You can also use module=... to specify that the snippet should be placed in a separate module (e.g. to avoid duplicate definitions).

The value will be deffined in the F# code that is processed and so you can use it from other (visible) code and get correct tool tips:

1: 
let answer = Hidden.answer

Including other snippets

When writing literate programs as Markdown documents, you can also include snippets in other languages. These will not be colorized and processed as F# code samples:

1: 
Console.WriteLine("Hello world!");

This snippet is turned into a pre element with the lang attribute set to csharp.

Markdown extensions

===================

To use LaTex extension, you need add javascript link to MathJax in your template.

To use inline LaTex, eclose LaTex code with $: \(k_{n+1} = n^2 + k_n^2 - k_{n-1}\). Alternatively, you can also use $$.

To use block LaTex, start a new parapgraph, with the first line marked as $$$ (no close $$$):

\[A_{m,n} = \begin{pmatrix} a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\ a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m,1} & a_{m,2} & \cdots & a_{m,n} \end{pmatrix}\]

Use LaTex escape rule:

  • Escape $ in inline mode: \(\$\), \(\$var\)
  • Other escapes: \(\& \% \$ \# \_ \{ \}\)
  • Using < or >: \(x > 1\), \(y < 1\), \(x >= 1\), \(y <= 1\), \(x = 1\)
val factorial : x:int -> int

Full name: demo.factorial


 The Hello World of functional languages!
val x : int
val f10 : int

Full name: demo.f10
val answer : int

Full name: demo.answer
module Hidden

from demo
val answer : int

Full name: demo.Hidden.answer


 This is a hidden answer